home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 April
/
PCWorld_2008-04_cd.bin
/
komercni software
/
miton
/
SystemMechanic7Pro.exe
/
{app}
/
smhtml.dll
/
1033
/
HTML
/
MENU.JS
< prev
next >
Wrap
Text File
|
2008-01-24
|
9KB
|
328 lines
function MenuOnLoad()
{
RenderMenu();
myMenu = new SDMenu("my_menu");
myMenu.init();
}
AddLoadEvent( MenuOnLoad );
//
function CallExternal(menueId)
{
//SetActivePageButton(menueId);
try
{
external.DoOnPageButtonClicked(menueId);
}catch(e)
{
//alert(menueId);
}
}
function SetActivePageButton(mnueitemid)
{
var menu = new Menu();
menu.Select( mnueitemid);
}
//Render the whole menu
function RenderMenu()
{
var mi0 = new MenuItem("0");
mi0.Text = LOC_Nav_Overview;
mi0.Class = "current";
var mi1 = new MenuItem("1");
mi1.Text = LOC_Nav_Problems;
var ms1 = new MenuSub("dashboard");
ms1.Text = LOC_Nav_Dashboard;
ms1.Style = "background:url("+LOC_Nav_bg_Dashboard_idle+") no-repeat;";
ms1.MouseOverEvent = "this.style.background='url('+LOC_Nav_bg_Dashboard_hover+') no-repeat'";
ms1.MouseOutEvent = "this.style.background='url('+LOC_Nav_bg_Dashboard_idle+') no-repeat'";
ms1.Add(mi0);
ms1.Add(mi1);
var mi2 = new MenuItem("2");
mi2.Text = LOC_Nav_AutomatedTasks;
var mi3 = new MenuItem("3");
mi3.Text = LOC_Nav_InternetSecurity;
var ms2 = new MenuSub("activecare");
ms2.Text = LOC_Nav_ActiveCare;
ms2.Class = "collapsed";
ms2.Style = "background:url("+LOC_Nav_bg_ActiveCare_idle+") no-repeat;";
ms2.MouseOverEvent = "this.style.background='url('+LOC_Nav_bg_ActiveCare_hover+') no-repeat'";
ms2.MouseOutEvent = "this.style.background='url('+LOC_Nav_bg_ActiveCare_idle+') no-repeat'";
ms2.Add(mi2);
ms2.Add(mi3);
var mi4 = new MenuItem("4");
mi4.Text = LOC_Nav_PowerTools;
var mi5 = new MenuItem("5");
mi5.Text = LOC_Nav_IndividualTools;
var ms3 = new MenuSub("tools");
ms3.Class = "collapsed";
ms3.Style = "background:url("+LOC_Nav_bg_Tools_idle+") no-repeat;";
ms3.Text = LOC_Nav_Tools;
ms3.MouseOverEvent = "this.style.background='url('+LOC_Nav_bg_Tools_hover+') no-repeat'";
ms3.MouseOutEvent = "this.style.background='url('+LOC_Nav_bg_Tools_idle+') no-repeat'";
ms3.Add(mi4);
ms3.Add(mi5);
var mi6 = new MenuItem("6");
mi6.Text = LOC_Nav_IntelliStatus;
var mi7 = new MenuItem("7");
mi7.Text = LOC_Nav_History;
var ms4 = new MenuSub("reports");
ms4.Class = "collapsed";
ms4.Style = "background:url("+LOC_Nav_bg_Reports_idle+") no-repeat;";
ms4.Text = LOC_Nav_Reports;
ms4.MouseOverEvent = "this.style.background='url('+LOC_Nav_bg_Reports_hover+') no-repeat'";
ms4.MouseOutEvent = "this.style.background='url('+LOC_Nav_bg_Reports_idle+') no-repeat'";
ms4.Add(mi6);
ms4.Add(mi7);
var menu = new Menu();
menu.Add(ms1);
menu.Add(ms2);
menu.Add(ms3);
menu.Add(ms4);
Get("my_menu").innerHTML = menu.Render();
}
//******************** Menu render helper classes **************************************
function MenuItem(id)
{
this.ID = id || "";
this.Text = "MenuItem_" + this.ID;
this.Class = "";
this.OnClickEvent = "CallExternal('" + this.ID + "');";
this.Render = __MenuItemRender;
function __MenuItemRender()
{
var html = "\n<a id=\"" + this.ID + "\" class=\"" + this.Class + "\" href=\"javascript:" + this.OnClickEvent + "\" onfocus=\"this.blur();\">" + this.Text + "</a>\n";
return html;
}
}
function MenuSub(id)
{
this.ID = id || "";
this.Class = "";
this.Style = "";
this.Text = " ";
this.MouseOverEvent = "";
this.MouseOutEvent = "";
this.Render = __MenuSubRender;
this.Add = __MenuSubAdd;
this.arrMenuItems = new Array();
function __MenuSubRender()
{
var html = "\n<div id=\"" + this.ID + "\" class=\"" + this.Class + "\" ";
if( this.Style != "")
html += " Style=\"" + this.Style + "\" ";
if( this.MouseOverEvent != "")
html += " onmouseover=\"" + this.MouseOverEvent + "\" ";
if( this.MouseOutEvent != "")
html += " onmouseout=\"" + this.MouseOutEvent + "\" ";
html += " > \n";
html += "\n<span>" + this.Text + "</span>\n";
for(var x=0; x<this.arrMenuItems.length; x++ )
html += this.arrMenuItems[x].Render();
html += "\n</div>\n";
return html;
}
function __MenuSubAdd(objMenuSub)
{
this.arrMenuItems[this.arrMenuItems.length] = objMenuSub;
}
}
//array to hold the menus
var ArrMenu = new Array();
function Menu()
{
this.arrMenuSub = new Array();
this.Add = __MenuAdd;
this.Render = __MenuRender;
this.Select = __MenuSelect;
function __MenuAdd(objMenuItem)
{
ArrMenu[ArrMenu.length] = objMenuItem;
}
function __MenuRender()
{
var html = "";
for(var x=0; x<ArrMenu.length; x++)
{
html += ArrMenu[x].Render();
}
return html;
}
function __MenuSelect(id)
{
for(var x=0; x<ArrMenu.length; x++)
{
for(var y=0; y<ArrMenu[x].arrMenuItems.length; y++)
{
Get(ArrMenu[x].arrMenuItems[y].ID).className = "";
}
}
var menuItem = Get(id);
if (menuItem != null)
{
menuItem.className = "current";
}
}
}
//******************** End Menu render helper classes **************************************
//********************************** Menu ******************************************
function SDMenu(id) {
if (!document.getElementById || !document.getElementsByTagName)
return false;
this.menu = document.getElementById(id);
this.submenus = this.menu.getElementsByTagName("div");
this.remember = false;
this.speed = 5;
this.markCurrent = true;
this.oneSmOnly = false;
}
SDMenu.prototype.init = function() {
var mainInstance = this;
for (var i = 0; i < this.submenus.length; i++)
this.submenus[i].getElementsByTagName("span")[0].onclick = function() {
mainInstance.toggleMenu(this.parentNode);
};
if (this.markCurrent) {
var links = this.menu.getElementsByTagName("a");
for (var i = 0; i < links.length; i++)
if (links[i].href == document.location.href) {
links[i].className = "current";
break;
}
}
if (this.remember) {
var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)");
var match = regex.exec(document.cookie);
if (match) {
var states = match[1].split("");
for (var i = 0; i < states.length; i++)
this.submenus[i].className = (states[i] == 0 ? "collapsed" : "");
}
}
};
SDMenu.prototype.toggleMenu = function(submenu) {
if (submenu.className == "collapsed")
this.expandMenu(submenu);
else
this.collapseMenu(submenu);
};
SDMenu.prototype.expandMenu = function(submenu) {
var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
var links = submenu.getElementsByTagName("a");
for (var i = 0; i < links.length; i++)
fullHeight += links[i].offsetHeight;
var moveBy = Math.round(this.speed * links.length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight + moveBy;
if (newHeight < fullHeight)
submenu.style.height = newHeight + "px";
else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "";
mainInstance.memorize();
}
}, 30);
this.collapseOthers(submenu);
};
SDMenu.prototype.collapseMenu = function(submenu) {
var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight - moveBy;
if (newHeight > minHeight)
submenu.style.height = newHeight + "px";
else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "collapsed";
mainInstance.memorize();
}
}, 30);
};
SDMenu.prototype.collapseOthers = function(submenu) {
if (this.oneSmOnly) {
for (var i = 0; i < this.submenus.length; i++)
if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed")
this.collapseMenu(this.submenus[i]);
}
};
SDMenu.prototype.expandAll = function() {
var oldOneSmOnly = this.oneSmOnly;
this.oneSmOnly = false;
for (var i = 0; i < this.submenus.length; i++)
if (this.submenus[i].className == "collapsed")
this.expandMenu(this.submenus[i]);
this.oneSmOnly = oldOneSmOnly;
};
SDMenu.prototype.collapseAll = function() {
for (var i = 0; i < this.submenus.length; i++)
if (this.submenus[i].className != "collapsed")
this.collapseMenu(this.submenus[i]);
};
SDMenu.prototype.memorize = function() {
if (this.remember) {
var states = new Array();
for (var i = 0; i < this.submenus.length; i++)
states.push(this.submenus[i].className == "collapsed" ? 0 : 1);
var d = new Date();
d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";
}
};